/**
 * API响应工具类
 */
class ApiResponse {
  /**
   * 成功响应
   * @param {any} data 响应数据
   * @param {string} message 响应消息
   * @returns {Object}
   */
  static success(data = null, message = 'success') {
    return {
      code: 200,
      message,
      data
    };
  }

  /**
   * 失败响应
   * @param {number} code 错误码
   * @param {string} message 错误消息
   * @returns {Object}
   */
  static fail(code, message) {
    return {
      code,
      message,
      data: null
    };
  }

  /**
   * 错误响应
   * @param {string} message 错误消息
   * @returns {Object}
   */
  static error(message = '服务器内部错误') {
    return {
      code: 500,
      message,
      data: null
    };
  }

  /**
   * 参数验证错误响应
   * @param {string} message 错误消息
   * @returns {Object}
   */
  static validationError(message = '参数验证失败') {
    return {
      code: 400,
      message,
      data: null
    };
  }

  /**
   * 未授权响应
   * @param {string} message 错误消息
   * @returns {Object}
   */
  static unauthorized(message = '未授权') {
    return {
      code: 401,
      message,
      data: null
    };
  }

  /**
   * 禁止访问响应
   * @param {string} message 错误消息
   * @returns {Object}
   */
  static forbidden(message = '禁止访问') {
    return {
      code: 403,
      message,
      data: null
    };
  }

  /**
   * 资源不存在响应
   * @param {string} message 错误消息
   * @returns {Object}
   */
  static notFound(message = '资源不存在') {
    return {
      code: 404,
      message,
      data: null
    };
  }
}

/**
 * 响应码枚举
 */
const ResultCode = {
  SUCCESS: 200,
  BAD_REQUEST: 400,
  UNAUTHORIZED: 401,
  FORBIDDEN: 403,
  NOT_FOUND: 404,
  METHOD_NOT_ALLOWED: 405,
  REQUEST_TIMEOUT: 408,
  PARAM_VALID_ERROR: 4001,
  SERVER_ERROR: 500,
  SERVICE_UNAVAILABLE: 503
};

module.exports = {
  ApiResponse,
  ResultCode
}; 